/**
 * 图片加载工具
 * 支持懒加载、渐进式加载、缓存管理
 */

/**
 * 图片懒加载
 * @param {string} src 图片地址
 * @param {Object} options 配置选项
 * @returns {Promise}
 */
export function loadImage(src, options = {}) {
  return new Promise((resolve, reject) => {
    const img = new Image()
    
    img.onload = () => {
      resolve({
        src: src,
        width: img.width,
        height: img.height
      })
    }
    
    img.onerror = (err) => {
      reject(new Error(`图片加载失败: ${src}`))
    }
    
    img.src = src
  })
}

/**
 * 预加载图片
 * @param {Array<string>} urls 图片地址数组
 * @returns {Promise}
 */
export function preloadImages(urls) {
  const promises = urls.map(url => loadImage(url))
  return Promise.allSettled(promises)
}

/**
 * 获取图片宽高比
 * @param {number} width 宽度
 * @param {number} height 高度
 * @returns {number}
 */
export function getAspectRatio(width, height) {
  return height / width
}

/**
 * 格式化图片URL（添加参数）
 * @param {string} url 原始URL
 * @param {Object} params 参数对象
 * @returns {string}
 */
export function formatImageUrl(url, params = {}) {
  if (!url) return ''
  
  const urlObj = new URL(url)
  Object.keys(params).forEach(key => {
    urlObj.searchParams.set(key, params[key])
  })
  
  return urlObj.toString()
}

/**
 * 获取缩略图URL
 * @param {string} url 原始URL
 * @param {number} width 宽度
 * @param {number} height 高度
 * @returns {string}
 */
export function getThumbnailUrl(url, width = 400, height = 600) {
  return formatImageUrl(url, {
    w: width,
    h: height,
    mode: 'crop'
  })
}

/**
 * 检查图片是否已缓存
 * @param {string} url 图片地址
 * @returns {boolean}
 */
export function isImageCached(url) {
  // #ifdef H5
  const img = new Image()
  img.src = url
  return img.complete
  // #endif
  
  // #ifdef MP-WEIXIN
  // 微信小程序可以通过文件系统API检查
  return false
  // #endif
  
  return false
}

